<template>
  <div id="app">
    <transition
      :name="direction">
      <router-view></router-view>
    </transition>
    <!-- <router-view v-else="none"></router-view> -->
    <div id="UploadLoaction" style="display:none; width:0px; height:0px"></div>
  </div>
</template>

<script>
//rem适配
new function (){
  var _self = this;
  _self.width = 750;
  _self.fontSize = 100;
  _self.widthProportion = function(){
    var p = (document.body&&document.body.clientWidth||document.getElementsByTagName("html")[0].offsetWidth)/_self.width;
    return p>1?1:p;
  };
  _self.changePage = function(){
     document.getElementsByTagName("html")[0].setAttribute("style","font-size:"+_self.widthProportion()*_self.fontSize+"px !important");
  }
  _self.changePage();
  window.addEventListener("resize",function(){_self.changePage();},false);
};

export default {
  name: 'App',
  data(){
    return{
      direction:'',
      UserBizType:'',
      StaffID:'',
      mapObj:null,
    }
  },
  watch:{
    //页面切换效果
    '$route':function(to, from){
      this.UploadLocation();
      //title名字
      document.title = this.$route.name;
      // 登录校验和排除不检测的页面
      var except = ['login','register','password','module','wechat','scanbridge'],
          path = this.$route.path.substring(1,this.$route.path.length).split('/')[0];
      const index = except.findIndex(item => item === path);
      if(index < 0){
        if(!localStorage.UserInfo){
          this.$router.push({
            path:'/login'
          })
        }
      };
      //切换效果
      // const toDepth = to.path.split('/').length;
      // const fromDepth = from.path.split('/').length;
      // if(to.path=='/index' || to.path=='/orderList' || to.path=='/message' || to.path=='/user'){
      //   this.direction = '';
      //   return false;
      // }
      // if(toDepth < fromDepth){
      //   this.direction = 'out';
      // }else if(toDepth == fromDepth){
      //   var tolevel = to.meta.level,
      //       fromlevel = from.meta.level;
      //       // debugger;
      //   if(tolevel && fromlevel && tolevel<fromlevel){
      //     this.direction = 'out';
      //   }else{
      //     this.direction = 'in';
      //   };
      // }
      // else{
      //   this.direction = 'in';
      // };
    },

    
  },
  created() {
    //字体变化
  if(localStorage.ftClass){
      document.body.setAttribute("class",localStorage.ftClass);
    }
    if(localStorage.ft){
      document.body.setAttribute("class",localStorage.ftClass);
      document.body.style.fontSize = localStorage.ft + 'px';
    }
    this.setWxConfig();
    // setInterval(this.UploadLocation, 5*60*1000);
  },

  methods:{
    UploadLocation(){
      if(localStorage.UserInfo != '' && localStorage.UserInfo != null  && this.UserBizType == '')
      {
        this.UserBizType = JSON.parse(localStorage.UserInfo).UserBizType;
        this.StaffID = JSON.parse(localStorage.UserInfo).StaffID;
      }

      if(localStorage.UserInfo != '' && localStorage.UserInfo != null  && this.UserBizType == 'Driver')
      {
        this.getGeo();
      }
    },

    getGeo(){
      var _this = this;
      this.jWeixin.getLocation({
        type: 'gcj02', // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'
        success: function (res) {
          // var latitude = res.latitude; // 纬度，浮点数，范围为90 ~ -90
          // var longitude = res.longitude; // 经度，浮点数，范围为180 ~ -180。
          // alert(JSON.stringify(res));
          _this.GetStaffLastLocation(res);
        }
      });
    },

    GetStaffLastLocation(data){
      var _this = this;
      if(!_this.isNullOrEmpty(data.longitude) && !_this.isNullOrEmpty(data.latitude))
      {
        var lng = data.longitude,
            lat = data.latitude,
            lastlng = '',
            lastlat = '',
            post = false;
        var query = {
          StaffID: _this.StaffID,
        }
        _this.Ajax.post('GetStaffLastLocation',query).then(function(resp) {
          if (resp.IsSuccess == true) {
            if(resp.Data != null)
            {
              var lastloc = JSON.parse(resp.Data.Location);
              lastlng = lastloc.lng;
              lastlat = lastloc.lat;
              post = _this.AmapCalcDistance(lastlng,lastlat,lng,lat);
              _this.AddStaffLocation(post,lng,lat);
            }
            else
            {
              post = true;
              _this.AddStaffLocation(post,lng,lat);
            }
          }
        });
      }
    },

    AddStaffLocation(post,lng,lat){
      if(post)
      {
        var loc = {};
        loc.lng = lng;
        loc.lat = lat;
        loc = JSON.stringify(loc);
        var query = {
          StaffID: this.StaffID,
          Location: loc,
        };

        this.Ajax.post('AddStaffLocation',query).then(function(resp) {
          if (resp.IsSuccess == true) {
            console.log("Position Updated!")
          }
        });
      }
    },

    AmapCalcDistance(lastlng,lastlat,lng,lat){
      var lnglat = new AMap.LngLat(lastlng, lastlat);
      var myDistance = lnglat.distance([lng, lat]);
      console.log('两点间距离为：' + myDistance + '米');
      // alert('两点间距离为：' + myDistance + '米');
      if (myDistance < 100) {
          return false;
      }
      return true;
    },


    // getGeo(){
    //   if(this.mapObj == null)
    //   {
    //     this.initMap();
    //   }
    //   else
    //   {
    //     this.getCurrent(this.mapObj);
    //   }
    // },

    // initMap(){
    //   var map = new AMap.Map("UploadLoaction", {});
    //   this.mapObj = map;
    //   this.getCurrent(this.mapObj);
    // },
    // getCurrent(map) {
    //   var _this = this;
    //   var geolocation = null;
    //   map.plugin("AMap.Geolocation", function() {
    //     geolocation = new AMap.Geolocation({
    //       enableHighAccuracy: true, //是否使用高精度定位，默认:true
    //       timeout: 10000, //超过10秒后停止定位，默认：无穷大
    //       maximumAge: 0, //定位结果缓存0毫秒，默认：0
    //       convert: true, //自动偏移坐标，偏移后的坐标为高德坐标，默认：true
    //       showButton: true, //显示定位按钮，默认：true
    //       buttonPosition: "LB", //定位按钮停靠位置，默认：'LB'，左下角
    //       buttonOffset: new AMap.Pixel(10, 20), //定位按钮与设置的停靠位置的偏移量，默认：Pixel(10, 20)
    //       showMarker: true, //定位成功后在定位到的位置显示点标记，默认：true
    //       showCircle: true, //定位成功后用圆圈表示定位精度范围，默认：true
    //       panToLocation: true, //定位成功后将定位到的位置作为地图中心点，默认：true
    //       zoomToAccuracy: true //定位成功后调整地图视野范围使定位位置及精度范围视野内可见，默认：false
    //     });
    //     // ios环境切换到使用远程https定位
    //     if (AMap.UA.ios) {
    //       //使用远程定位，见 remogeo.js
    //       var remoGeo = new RemoGeoLocation();
    //       //替换方法
    //       navigator.geolocation.getCurrentPosition = function() {
    //           return remoGeo.getCurrentPosition.apply(remoGeo, arguments);
    //       };
    //       //替换方法
    //       navigator.geolocation.watchPosition = function() {
    //           return remoGeo.watchPosition.apply(remoGeo, arguments);
    //       };
    //     }
        
    //     map.addControl(geolocation);
    //     geolocation.getCurrentPosition();
    //     AMap.event.addListener(geolocation, "complete", onComplete); //返回定位信息
    //     AMap.event.addListener(geolocation, "error", onError); //返回定位出错信息
    //   });
    //   /*
    //    *解析定位结果
    //    */
    //   function onComplete(data) {
    //     var str = "定位成功:";
    //     str += "经度：" + data.position.getLng();
    //     str += "纬度：" + data.position.getLat();
    //     str += "精度：" + data.accuracy + " 米";
    //     str += "是否经过偏移：" + (data.isConverted ? "是" : "否");

    //     if(!_this.isNullOrEmpty(data.position.getLng()) && !_this.isNullOrEmpty(data.position.getLat()))
    //     {
    //       var lng = data.position.getLng(),
    //           lat = data.position.getLat(),
    //           lastlng = '',
    //           lastlat = '',
    //           post = false;
    //       var query = {
    //         StaffID: _this.StaffID,
    //       }
    //       _this.Ajax.post('GetStaffLastLocation',query).then(function(resp) {
    //         if (resp.IsSuccess == true) {
    //           if(resp.Data != null)
    //           {
    //             var lastloc = JSON.parse(resp.Data.Location);
    //             lastlng = lastloc.lng;
    //             lastlat = lastloc.lat;
    //             post = _this.AmapCalcDistance(lastlng,lastlat,lng,lat);
    //             _this.AddStaffLocation(post,lng,lat);
    //           }
    //           else
    //           {
    //             post = true;
    //             _this.AddStaffLocation(post,lng,lat);
    //           }
    //         }
    //       });
    //     }
    //   }
    //   /*
    //    *解析定位错误信息
    //    */
    //   function onError(data) {
    //     var str = "定位失败";
    //     str += "错误信息：";
    //     switch (data.info) {
    //       case "POSITION_UNAVAILBLE":
    //         str += "无法获得当前位置";
    //         break;
    //       case "PERMISSION_DENIED":
    //         str += "浏览器阻止了定位操作";
    //         break;
    //       case "TIMEOUT":
    //         str += "定位超时";
    //         break;   
    //       default:
    //         str += "未知错误";
    //         break;
    //     }
    //     // alert(str);
    //     console.log(str);
    //   }
    // },


    //微信初始化
    setWxConfig:function() {
      var url = location.href;
      var self = this;
      if (location.hash.length) {
        url = url.substr(0, url.indexOf(location.hash));
      }
      var request = {
          url: url
      };
      this.Ajax.post('getTicKet',request).then(function(resp) {
        if (resp.IsSuccess == true) {
            var data = resp.Data;
            //开始注册wx
            self.jWeixin.config({
                debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
                appId: data.appId, // 必填，公众号的唯一标识
                timestamp: data.timestamp, // 必填，生成签名的时间戳
                nonceStr: data.nonceStr, // 必填，生成签名的随机串
                signature: data.signature, // 必填，签名，见附录1
                jsApiList: [
                    "scanQRCode",
                    "getLocation",
                    "getLocalImgData",
                    "previewImage",
                    "chooseImage",
                    "openLocation",
                    "uploadImage",
                    "downloadImage",
                    "onMenuShareAppMessage",
                    "onMenuShareQQ",
                    "showMenuItems",
                    "menuItem:share:appMessage",
                    "menuItem:share:qq",
                    "hideOptionMenu",
                    "startRecord",
                    "stopRecord",
                    "playVoice",
                    "stopVoice",
                    "onVoiceRecordEnd"
                ] // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
            });
            self.jWeixin.hideOptionMenu();
        }
      });
    },

    isNullOrEmpty(val){
      if(val != '' && val != null)
      {
        return false;
      }
      else
      {
        return true;
      }
    },
  },

}
</script>

<!-- 公共样式引入 -->
<style lang="less">
@import url('./style/common.less');
</style>
